#include<bits/stdc++.h>

using namespace std;

struct cars{
    int d,v,a;
}c[100005];

int n,m,l,V;
int p[100005];

int main()
{
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    int T;
    cin>>T;
    for(int k=0;k<T;k++)
    {
        cin>>n>>m>>l>>V;
        for(int i=0;i<n;i++)
            scanf("%d%d%d",&c[i].d,&c[i].v,&c[i].a);
        int maxp=-1;
        for(int i=0;i<m;i++)
        {
            scanf("%d",&p[i]);
            if(p[i]>maxp)
                maxp=p[i];
        }
        if(c[0].a==0)
        {
            int sum=0;
            for(int i=0;i<n;i++)
                if(c[i].v>V && maxp>=c[i].d)
                    sum++;
            if(sum==0)
                cout<<sum<<" "<<m<<endl;
            else
                cout<<sum<<" "<<m-1<<endl;
        }
        else if(c[0].a>0)
        {
            int sum=0;
            for(int i=0;i<n;i++)
            {
                if(c[i].v>V && maxp>=c[i].d)
                    sum++;
                else if(maxp>c[i].d && sqrt(c[i].v*c[i].v+2*c[i].a*(maxp-c[i].d))>V)
                        sum++;
            }
            if(sum==0)
                cout<<sum<<" "<<m<<endl;
            else
                cout<<sum<<" "<<m-1<<endl;
        }
    }
    return 0;
}
